home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / Unicode.a < prev    next >
Text File  |  1996-05-01  |  13KB  |  462 lines

  1. ;
  2. ;    File:        Unicode.a
  3. ;
  4. ;    Contains:    Unicode Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.1 through System 8
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__UNICODE__') = 'UNDEFINED' THEN
  19. __UNICODE__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.     IF &TYPE('__TEXTCOMMON__') = 'UNDEFINED' THEN
  25.     include 'TextCommon.a'
  26.     ENDIF
  27.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  28.     include 'MixedMode.a'
  29.     ENDIF
  30.     IF 0 THEN
  31. ;
  32. ; The following 7 typedefs are required for seeds until they get
  33. ; moved to a future version of Types.[hp] in a future ETO release.
  34. ; Also note that seeds should include a copy of the new TextCommon.[hp].
  35. ;
  36. ; typedef UInt8 *                        BytePtr
  37.  
  38. ; typedef UInt32                         ByteCount
  39.  
  40. ; typedef UInt32                         ItemCount
  41.  
  42. ; typedef UInt32                         OptionBits
  43.  
  44. ; typedef short                         RegionCode
  45.  
  46. ; typedef UInt32                         ByteOffset
  47.  
  48. ;
  49. ; The following typedefs are required for seeds until they get
  50. ; moved to a future version of Errors.[hp] in a future ETO release.
  51. ; Unicode Converter Error Codes
  52. ;
  53.  
  54. unicodeChecksumErr                EQU        -8769
  55. unicodeNoTableErr                EQU        -8768
  56. unicodeVariantErr                EQU        -8767
  57. unicodeFallbacksErr                EQU        -8766
  58. unicodePartConvertErr            EQU        -8765
  59. unicodeBufErr                    EQU        -8764
  60. unicodeCharErr                    EQU        -8763
  61. unicodeElementErr                EQU        -8762
  62. unicodeNotFoundErr                EQU        -8761
  63. unicodeTableFormatErr            EQU        -8760
  64. unicodeDirectionErr                EQU        -8759
  65. unicodeContextualErr            EQU        -8758
  66. unicodeTextEncodingDataErr        EQU        -8757
  67.     ENDIF
  68.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  69. ;  Unicode Converter Gestalt Constants: (****these belong in Gestalt.i****) 
  70.  
  71. gestaltUnicodeAttr                EQU        'unic'
  72. gestaltUnicodeConverterPresent    EQU        0
  73. gestaltUnicodeConverterMask        EQU        $00000001
  74. ;  Basic types for Unicode characters and strings: 
  75. ; typedef UniChar *                        UniCharArrayPtr
  76.  
  77. ; typedef const UniChar *                ConstUniCharArrayPtr
  78.  
  79. ;  Unicode conversion contexts: 
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86. ;  UnicodeMapVersion type & values 
  87. ; typedef SInt32                         UnicodeMapVersion
  88.  
  89.  
  90. kUnicodeUseLatestMapping        EQU        -1
  91. ;  Types used in conversion 
  92. UnicodeMapping            RECORD 0
  93. unicodeEncoding             ds.l    1                ; offset: $0 (0)
  94. otherEncoding             ds.l    1                ; offset: $4 (4)
  95. mappingVersion             ds.l    1                ; offset: $8 (8)
  96. sizeof                     EQU *                    ; size:   $C (12)
  97.                         ENDR
  98. ; typedef struct UnicodeMapping *        UnicodeMappingPtr
  99.  
  100. ; typedef const struct UnicodeMapping *    ConstUnicodeMappingPtr
  101.  
  102. TextEncodingRun            RECORD 0
  103. offset                     ds.l    1                ; offset: $0 (0)
  104. textEncoding             ds.l    1                ; offset: $4 (4)
  105. sizeof                     EQU *                    ; size:   $8 (8)
  106.                         ENDR
  107. ;  Control flags for ConvertUnicodeToText and ConvertTextToUnicode 
  108.  
  109. kUnicodeUseFallbacksBit            EQU        0
  110. kUnicodeKeepInfoBit                EQU        1
  111. kUnicodeDirectionalityBits        EQU        2
  112. kUnicodeVerticalFormBit            EQU        4
  113. kUnicodeLooseMappingsBit        EQU        5
  114. kUnicodeStringUnterminatedBit    EQU        6
  115. kUnicodeTextRunBit                EQU        7
  116. kUnicodeKeepSameEncodingBit        EQU        8
  117.  
  118. kUnicodeUseFallbacksMask        EQU        $00000001
  119. kUnicodeKeepInfoMask            EQU        $00000002
  120. kUnicodeDirectionalityMask        EQU        $0000000C
  121. kUnicodeVerticalFormMask        EQU        $00000010
  122. kUnicodeLooseMappingsMask        EQU        $00000020
  123. kUnicodeStringUnterminatedMask    EQU        $00000040
  124. kUnicodeTextRunMask                EQU        $00000080
  125. kUnicodeKeepSameEncodingMask    EQU        $00000100
  126. ;  Values for kUnicodeDirectionality field 
  127.  
  128. kUnicodeDefaultDirection        EQU        0
  129. kUnicodeLeftToRight                EQU        1
  130. kUnicodeRightToLeft                EQU        2
  131. ;  Control flags for TruncateForUnicodeToText: 
  132.  
  133. kUnicodeTextElementSafeBit        EQU        0
  134. kUnicodeRestartSafeBit            EQU        1
  135.  
  136. kUnicodeTextElementSafeMask        EQU        $00000001
  137. kUnicodeRestartSafeMask            EQU        $00000002
  138. ;  Filter bits for QueryUnicodeMappings filter field: 
  139.  
  140. kUnicodeMatchUnicodeBaseBit        EQU        0
  141. kUnicodeMatchUnicodeVariantBit    EQU        1
  142. kUnicodeMatchUnicodeFormatBit    EQU        2
  143. kUnicodeMatchOtherBaseBit        EQU        3
  144. kUnicodeMatchOtherVariantBit    EQU        4
  145. kUnicodeMatchOtherFormatBit        EQU        5
  146.  
  147. kUnicodeMatchUnicodeBaseMask    EQU        $00000001
  148. kUnicodeMatchUnicodeVariantMask    EQU        $00000002
  149. kUnicodeMatchUnicodeFormatMask    EQU        $00000004
  150. kUnicodeMatchOtherBaseMask        EQU        $00000008
  151. kUnicodeMatchOtherVariantMask    EQU        $00000010
  152. kUnicodeMatchOtherFormatMask    EQU        $00000020
  153. ;  Control flags for SetFallbackUnicodeToText 
  154.  
  155. kUnicodeFallbackSequencingBits    EQU        0
  156.  
  157. kUnicodeFallbackSequencingMask    EQU        $00000003
  158. ;  values for kUnicodeFallbackSequencing field 
  159.  
  160. kUnicodeFallbackDefaultOnly        EQU        0
  161. kUnicodeFallbackCustomOnly        EQU        1
  162. kUnicodeFallbackDefaultFirst    EQU        2
  163. kUnicodeFallbackCustomFirst        EQU        3
  164.     ENDIF
  165.     IF FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE THEN
  166. ;  Caller-supplied entry point to a fallback handler 
  167.     ENDIF
  168.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  169. ;  Function prototypes 
  170. ;
  171. ; The following are in TextCommon.i:
  172. ; CreateTextEncoding, GetTextEncodingBase, GetTextEncodingVariant, GetTextEncodingFormat
  173. ;
  174. ;  Create a new TextToUnicodeInfo structure. 
  175. ;
  176. ; pascal OSStatus CreateTextToUnicodeInfo(ConstUnicodeMappingPtr UnicodeMapping, TextToUnicodeInfo *textToUnicodeInfo)
  177. ;
  178.     IF ¨ GENERATINGCFM THEN
  179.         Macro
  180.         _CreateTextToUnicodeInfo
  181.             move.w              #$0401,D0
  182.             dc.w                $ABCE
  183.         EndM
  184.     ELSE
  185.         IMPORT_CFM_FUNCTION CreateTextToUnicodeInfo
  186.     ENDIF
  187.  
  188. ;  Create a new UnicodeToTextInfo structure. 
  189. ;
  190. ; pascal OSStatus CreateUnicodeToTextInfo(ConstUnicodeMappingPtr UnicodeMapping, UnicodeToTextInfo *unicodeToTextInfo)
  191. ;
  192.     IF ¨ GENERATINGCFM THEN
  193.         Macro
  194.         _CreateUnicodeToTextInfo
  195.             move.w              #$040C,D0
  196.             dc.w                $ABCE
  197.         EndM
  198.     ELSE
  199.         IMPORT_CFM_FUNCTION CreateUnicodeToTextInfo
  200.     ENDIF
  201.  
  202. ;
  203. ; pascal OSStatus CreateUnicodeToTextRunInfo(ItemCount numberOfMappings, ConstUnicodeMappingPtr UnicodeMapping, UnicodeToTextRunInfo *unicodeToTextInfo)
  204. ;
  205.     IF ¨ GENERATINGCFM THEN
  206.         Macro
  207.         _CreateUnicodeToTextRunInfo
  208.             move.w              #$0612,D0
  209.             dc.w                $ABCE
  210.         EndM
  211.     ELSE
  212.         IMPORT_CFM_FUNCTION CreateUnicodeToTextRunInfo
  213.     ENDIF
  214.  
  215. ;  Dispose of a TextToUnicodeInfo structure. 
  216. ;
  217. ; pascal OSStatus DisposeTextToUnicodeInfo(TextToUnicodeInfo *textToUnicodeInfo)
  218. ;
  219.     IF ¨ GENERATINGCFM THEN
  220.         Macro
  221.         _DisposeTextToUnicodeInfo
  222.             move.w              #$0202,D0
  223.             dc.w                $ABCE
  224.         EndM
  225.     ELSE
  226.         IMPORT_CFM_FUNCTION DisposeTextToUnicodeInfo
  227.     ENDIF
  228.  
  229. ;  Dispose of a UnicodeToTextInfo structure. 
  230. ;
  231. ; pascal OSStatus DisposeUnicodeToTextInfo(UnicodeToTextInfo *unicodeToTextInfo)
  232. ;
  233.     IF ¨ GENERATINGCFM THEN
  234.         Macro
  235.         _DisposeUnicodeToTextInfo
  236.             move.w              #$020D,D0
  237.             dc.w                $ABCE
  238.         EndM
  239.     ELSE
  240.         IMPORT_CFM_FUNCTION DisposeUnicodeToTextInfo
  241.     ENDIF
  242.  
  243. ;
  244. ; pascal OSStatus DisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo *unicodeToTextInfo)
  245. ;
  246.     IF ¨ GENERATINGCFM THEN
  247.         Macro
  248.         _DisposeUnicodeToTextRunInfo
  249.             move.w              #$0213,D0
  250.             dc.w                $ABCE
  251.         EndM
  252.     ELSE
  253.         IMPORT_CFM_FUNCTION DisposeUnicodeToTextRunInfo
  254.     ENDIF
  255.  
  256. ;  Convert a string to Unicode. 
  257. ;
  258. ; pascal OSStatus ConvertTextToUnicode(TextToUnicodeInfo textToUnicodeInfo, ByteCount sourceLen, ConstLogicalAddress sourceStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *sourceRead, ByteCount *unicodeLen, UniCharArrayPtr unicodeStr)
  259. ;
  260.     IF ¨ GENERATINGCFM THEN
  261.         Macro
  262.         _ConvertTextToUnicode
  263.             move.w              #$1404,D0
  264.             dc.w                $ABCE
  265.         EndM
  266.     ELSE
  267.         IMPORT_CFM_FUNCTION ConvertTextToUnicode
  268.     ENDIF
  269.  
  270. ;  Convert a string from Unicode. 
  271. ;
  272. ; pascal OSStatus ConvertUnicodeToText(UnicodeToTextInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *inputRead, ByteCount *outputLen, LogicalAddress outputStr)
  273. ;
  274.     IF ¨ GENERATINGCFM THEN
  275.         Macro
  276.         _ConvertUnicodeToText
  277.             move.w              #$1403,D0
  278.             dc.w                $ABCE
  279.         EndM
  280.     ELSE
  281.         IMPORT_CFM_FUNCTION ConvertUnicodeToText
  282.     ENDIF
  283.  
  284. ;
  285. ; pascal OSStatus ConvertUnicodeToTextRun(UnicodeToTextRunInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, OptionBits controlFlags, ItemCount offsetCount, ByteOffset *offsetArray, ByteCount bufLen, ByteCount *inputRead, ByteCount *outputLen, LogicalAddress outputStr, ItemCount encodingRunBufLen, ItemCount *encodingRunOutLen, TextEncodingRun *encodingRuns)
  286. ;
  287.     IF ¨ GENERATINGCFM THEN
  288.         Macro
  289.         _ConvertUnicodeToTextRun
  290.             move.w              #$1A14,D0
  291.             dc.w                $ABCE
  292.         EndM
  293.     ELSE
  294.         IMPORT_CFM_FUNCTION ConvertUnicodeToTextRun
  295.     ENDIF
  296.  
  297. ;  Truncate a multibyte string at a safe place. 
  298. ;
  299. ; pascal OSStatus TruncateForTextToUnicode(ConstTextToUnicodeInfo textToUnicodeInfo, ByteCount sourceLen, ConstLogicalAddress sourceStr, ByteCount maxLen, ByteCount *truncatedLen)
  300. ;
  301.     IF ¨ GENERATINGCFM THEN
  302.         Macro
  303.         _TruncateForTextToUnicode
  304.             move.w              #$0A06,D0
  305.             dc.w                $ABCE
  306.         EndM
  307.     ELSE
  308.         IMPORT_CFM_FUNCTION TruncateForTextToUnicode
  309.     ENDIF
  310.  
  311. ;  Truncate a Unicode string at a safe place. 
  312. ;
  313. ; pascal OSStatus TruncateForUnicodeToText(ConstUnicodeToTextInfo unicodeToTextInfo, ByteCount sourceLen, ConstUniCharArrayPtr sourceStr, OptionBits controlFlags, ByteCount maxLen, ByteCount *truncatedLen)
  314. ;
  315.     IF ¨ GENERATINGCFM THEN
  316.         Macro
  317.         _TruncateForUnicodeToText
  318.             move.w              #$0C05,D0
  319.             dc.w                $ABCE
  320.         EndM
  321.     ELSE
  322.         IMPORT_CFM_FUNCTION TruncateForUnicodeToText
  323.     ENDIF
  324.  
  325. ;  Convert a Pascal string to Unicode. 
  326. ;
  327. ; pascal OSStatus ConvertPStringToUnicode(TextToUnicodeInfo textToUnicodeInfo, ConstStr255Param pascalStr, ByteCount bufLen, ByteCount *unicodeLen, UniCharArrayPtr unicodeStr)
  328. ;
  329.     IF ¨ GENERATINGCFM THEN
  330.         Macro
  331.         _ConvertPStringToUnicode
  332.             move.w              #$0A08,D0
  333.             dc.w                $ABCE
  334.         EndM
  335.     ELSE
  336.         IMPORT_CFM_FUNCTION ConvertPStringToUnicode
  337.     ENDIF
  338.  
  339. ;  Convert a Unicode string to Pascal. 
  340. ;
  341. ; pascal OSStatus ConvertUnicodeToPString(UnicodeToTextInfo unicodeToTextInfo, ByteCount unicodeLen, ConstUniCharArrayPtr unicodeStr, Str255 pascalStr)
  342. ;
  343.     IF ¨ GENERATINGCFM THEN
  344.         Macro
  345.         _ConvertUnicodeToPString
  346.             move.w              #$0807,D0
  347.             dc.w                $ABCE
  348.         EndM
  349.     ELSE
  350.         IMPORT_CFM_FUNCTION ConvertUnicodeToPString
  351.     ENDIF
  352.  
  353. ;  Get a list of the available conversion mappings. 
  354. ;
  355. ; pascal OSStatus QueryUnicodeMappings(OptionBits filter, ConstUnicodeMappingPtr findMapping, ItemCount maxCount, ItemCount *actualCount, UnicodeMappingPtr returnedMappings)
  356. ;
  357.     IF ¨ GENERATINGCFM THEN
  358.         Macro
  359.         _QueryUnicodeMappings
  360.             move.w              #$0A09,D0
  361.             dc.w                $ABCE
  362.         EndM
  363.     ELSE
  364.         IMPORT_CFM_FUNCTION QueryUnicodeMappings
  365.     ENDIF
  366.  
  367. ;  Get the name of a TextEncodingBase table. 
  368. ;
  369. ; pascal OSStatus GetTextEncodingBaseName(ConstUnicodeMappingPtr UnicodeMapping, LangCode languageID, ByteCount bufLen, ByteCount *nameLength, UniCharArrayPtr mappingName)
  370. ;
  371.     IF ¨ GENERATINGCFM THEN
  372.         Macro
  373.         _GetTextEncodingBaseName
  374.             move.w              #$090A,D0
  375.             dc.w                $ABCE
  376.         EndM
  377.     ELSE
  378.         IMPORT_CFM_FUNCTION GetTextEncodingBaseName
  379.     ENDIF
  380.  
  381. ;  Change the TextToUnicodeInfo to another mapping. 
  382. ;
  383. ; pascal OSStatus ChangeTextToUnicodeInfo(TextToUnicodeInfo textToUnicodeInfo, ConstUnicodeMappingPtr UnicodeMapping)
  384. ;
  385.     IF ¨ GENERATINGCFM THEN
  386.         Macro
  387.         _ChangeTextToUnicodeInfo
  388.             move.w              #$040B,D0
  389.             dc.w                $ABCE
  390.         EndM
  391.     ELSE
  392.         IMPORT_CFM_FUNCTION ChangeTextToUnicodeInfo
  393.     ENDIF
  394.  
  395. ;  Change the UnicodeToTextInfo to another mapping. 
  396. ;
  397. ; pascal OSStatus ChangeUnicodeToTextInfo(UnicodeToTextInfo unicodeToTextInfo, ConstUnicodeMappingPtr UnicodeMapping)
  398. ;
  399.     IF ¨ GENERATINGCFM THEN
  400.         Macro
  401.         _ChangeUnicodeToTextInfo
  402.             move.w              #$040E,D0
  403.             dc.w                $ABCE
  404.         EndM
  405.     ELSE
  406.         IMPORT_CFM_FUNCTION ChangeUnicodeToTextInfo
  407.     ENDIF
  408.  
  409.     ENDIF
  410.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  411. ;  Setup the fallback handler for converting Unicode To Text. 
  412. ;
  413. ; pascal OSStatus SetFallbackUnicodeToTextPreemptive(UnicodeToTextInfo unicodeToTextInfo, UnicodeToTextFallbackPreemptiveProcPtr fallback, OptionBits controlFlags, LogicalAddress infoPtr)
  414. ;
  415.     IF GENERATINGCFM THEN
  416.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToTextPreemptive
  417.     ENDIF
  418.  
  419. ;
  420. ; pascal OSStatus SetFallbackUnicodeToTextRunPreemptive(UnicodeToTextRunInfo unicodeToTextRunInfo, UnicodeToTextFallbackPreemptiveProcPtr fallback, OptionBits controlFlags, LogicalAddress infoPtr)
  421. ;
  422.     IF GENERATINGCFM THEN
  423.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToTextRunPreemptive
  424.     ENDIF
  425.  
  426.     ENDIF
  427.     IF FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE THEN
  428. ;  Setup the fallback handler for converting Unicode To Text. 
  429. ;
  430. ; pascal OSStatus SetFallbackUnicodeToText(UnicodeToTextInfo unicodeToTextInfo, UnicodeToTextFallbackUPP fallback, OptionBits controlFlags, LogicalAddress infoPtr)
  431. ;
  432.     IF ¨ GENERATINGCFM THEN
  433.         Macro
  434.         _SetFallbackUnicodeToText
  435.             move.w              #$080F,D0
  436.             dc.w                $ABCE
  437.         EndM
  438.     ELSE
  439.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToText
  440.     ENDIF
  441.  
  442. ;
  443. ; pascal OSStatus SetFallbackUnicodeToTextRun(UnicodeToTextRunInfo unicodeToTextRunInfo, UnicodeToTextFallbackUPP fallback, OptionBits controlFlags, LogicalAddress infoPtr)
  444. ;
  445.     IF ¨ GENERATINGCFM THEN
  446.         Macro
  447.         _SetFallbackUnicodeToTextRun
  448.             move.w              #$0819,D0
  449.             dc.w                $ABCE
  450.         EndM
  451.     ELSE
  452.         IMPORT_CFM_FUNCTION SetFallbackUnicodeToTextRun
  453.     ENDIF
  454.  
  455. ;
  456. ; The following are in TextCommon.i:
  457. ; UpgradeScriptInfoToTextEncoding, RevertTextEncodingToScriptInfo
  458. ;
  459.     ENDIF
  460.     ENDIF ; __UNICODE__ 
  461.  
  462.